//
//  YanWelcomeView.swift
//  SinaWeibo
//
//  Created by mac on 2017/5/18.
//  Copyright © 2017年 mac. All rights reserved.
//

import UIKit
import SDWebImage

// 欢迎试图
class YanWelcomeView: UIView {

    @IBOutlet weak var iconView: UIImageView!
    @IBOutlet weak var tipLabel: UILabel!
    @IBOutlet weak var bottomCons: NSLayoutConstraint!
    @IBOutlet weak var iconWidthCons: NSLayoutConstraint!
    
    class func welcomeView() -> YanWelcomeView {
        let nib = UINib(nibName: "YanWelcomeView", bundle: nil)
        
        let v = nib.instantiate(withOwner: nil, options: nil)[0] as! YanWelcomeView
        // 从xib加载的试图，默认600 x 600
        v.frame = UIScreen.main.bounds
        
        return v
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        // initWithCode 只是刚从xib 的二进制文件将试图数据加载完成
        // 还没有和代码连线建立起关系，开发时，千万不要在这个方法中处理UI
        print("initWithCoder + \(iconView)")
    }
    
    override func awakeFromNib() {
        // 1.url
        guard let urlString = YanNetworkManager.shared.userAccount.avatar_large,
            let url = URL(string: urlString)
            else {
                return
        }
        // 2.设置头像
        iconView.sd_setImage(with: url, placeholderImage: UIImage(named: "avatar_default_big"))
        
        
        // 3.设置圆角(iconView的bounds还没有设置）
        iconView.layer.cornerRadius = iconWidthCons.constant * 0.5
        iconView.layer.masksToBounds = true
        
    }
    
    // 试图被添加到window 上，表示试图已经显示
    override func didMoveToWindow() {
        super.didMoveToWindow()
        
        // 试图是使用自动布局来设置的，只是设置了约束
        // 当试图被添加到窗口上，根据父试图的大小，计算约束值，更新控件位置
        // layoutIfNeeded 直接按照当前的约束直接更新控件位置
        // 执行之后，控件所在位置，就是XIB中布局的位置
        self.layoutIfNeeded()
        
        bottomCons.constant = bounds.size.height - 200
        
        // 如果控件们的frame还没有计算好，所有的约束会一起动画
        UIView.animate(withDuration: 1.0, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0, options: [], animations: {
            // 更新约束
            self.layoutIfNeeded()
        }) { (_) in
            UIView.animate(withDuration: 1.0, animations: {
                self.tipLabel.alpha = 1
            }, completion: { (_) in
                self.removeFromSuperview()
            })
        }
    }
}
